package com.huawei.esdk.tp.common.local.conference;

import java.util.List;
import java.util.Map;
import com.huawei.esdk.tp.common.local.bean.ConferenceInfo;
import com.huawei.esdk.tp.common.local.bean.TPSDKResponse;


public interface ConferenceService
{
    /**
     * 预约普通会议
     * @param newConf
     * @return
     */
    TPSDKResponse<ConferenceInfo> scheduleConf(ConferenceInfo scheduleConf);

    /**
     * 预约带匿名会场会议
     * 
     * @param accessCode
     * @param newConf
     * @return
     */

    TPSDKResponse<ConferenceInfo> scheduleDynamicSiteConf(ConferenceInfo scheduleConf);

    /**
     * 增加指定会议与会会场
     * @param confId
     * @param siteUri
     * @return
     */
    TPSDKResponse<String> addSiteToScheduledConf(String confId, String siteUri);

    /**
     * 删除指定会议与会会场
     * 
     * @param confId
     * @param siteUri
     * @return
     */
    Integer delSiteFromScheduledConf(String confId, String siteUri);

    /**
     * 取消非周期性预约会议
     * 
     * @param confId
     * @return
     */
    Integer cancelScheduledConf(String confId);

    /**
     * 延长非周期性指定会议，
     * 
     * @param confId
     * @param prolongTime
     * @return
     */
    Integer proLongScheduledConf(String confId, Integer prolongTime);

    /**
     * 修改非周期性预约会议参数
     * 
     * @param editConf
     * @return
     */
    TPSDKResponse<ConferenceInfo> editScheduledConf(ConferenceInfo editConf);


    /**
     * 指定会议查询会场状态
     * @param confId
     * @param siteUris
     * @return
     */
    TPSDKResponse<Map<String, Integer>> queryConfSitesStatus(
            String confId, List<String> siteUris);

    /**
     * 结束正在召开的会议
     * 
     * @param confId
     * @return
     */
    Integer endConf(String confId);

    /**
     * 添加其他会场到正在召开的会议
     * 
     * @param confId
     * @param siteUri
     * @return
     */
    Integer addSiteToConf(String confId, String siteUri);

    /**
     * 
     * 从正在召开的会议删除其他会场
     * @param confId
     * @param siteUri
     * @return
     */
    Integer delSiteFromConf(String confId, String siteUri);

    /**
     * 声控切换
     * @param confId
     * @param onOff
     * @return
     */
    Integer setAudioSwitch(String confId, Boolean onOff);
    /**
     * 预约即时会议
     * @param scheduleConf
     * @return
     */
    TPSDKResponse<ConferenceInfo> scheduleImmediateConf(ConferenceInfo scheduleConf);
    /**
     * 查询指定会议状态
     * @param confId
     * @return
     */
    TPSDKResponse<Integer> queryConferenceStatus(String confId);
    
}
